package messagerie;
import java.util.Date;

/**
 * Informations d'Abonné gérées par l'opérateur
 */

public class AbonneOperateur implements GestionCommunication{

	// Attributs de l'abonné à l'opérateur 
	
	private String nom; 
	private Telephone telephone;
	private NumeroTelephone numTel;
	private Forfait forfait;
	private BoiteVocale boiteVocale;
	private BoiteSMS boiteSMS;
	private Operateur operateur;
	
	
	//Constructeur
	
	public AbonneOperateur (String nomA, Forfait nomForfait, Operateur opA /* NumeroTelephone numtelA */){
		this.nom = nomA;
		//this.telephone = telA;
		//this.numTel = numTelA;
		this.forfait= nomForfait;
		//this.boiteVocale = bVocaleA;
		//this.boiteSMS = bSmsA;
		this.operateur = opA;
      
	}
	
	//------------------------------------------------------------------------
	// méthodes de l'interface GestionCommunication
	//------------------------------------------------------------------------

  @Override
  public boolean appeler(String numero, String msgVocalSiOccupe, Date dateDebut)
  {
    // TODO
    return false;
  }
  @Override
  public void envoyerSMS(String numero, String sms, Date dateSMS)
  {
    // TODO
  }
  @Override
  public void recevoirSMS(MessageSMS message)
  {
    // TODO
  }
  @Override
  public boolean accepterAppel(String numeroAppelant)
  {
    // TODO
    return false;
  }
  @Override
  public void cloreAppel(Date fin)
  {
    // TODO
  }

  //------------------------------------------------------------------------
  // autres méthodes
  //------------------------------------------------------------------------

  // transférer sur le téléphone les SMS du serveur
  public void synchroniser()
  {
    // TODO
  }

  boolean estHorsLigne()
  {
    // TODO
    return true;
  }

  boolean estLibre()
  {
    // TODO
    return true;
  }

  /**
   * Assigner un numéro de téléphone à un nouvel abonné
   * @param num : numéro de téléphone à assigner
   */
  
  public void assignerNum (NumeroTelephone num){
	  this.numTel = num;
  }
  
  /**
   * Assigner un téléphone à un nouvel abonné
   * @param tel : téléphone à assigner
   */
  
  public void assignerTel (Telephone tel){
	  this.telephone = tel;
  }
  
  /**
   * Assigner un forfait à un nouvel abonné
   * @param forfaitAbo : forfait à assigner
   */
  
  public void assignerForfait(Forfait forfaitAbo){
	  this.forfait = forfaitAbo;
  }
  
  /**
   * Accesseur permettant d'obtenir le numéro de téléphone d'un abonné
   * @return : le numéro de téléphone de l'abonné sous sa forme "manuscrite" (String)
   */
  
  public String getNumero(){
		return this.numTel.getNumeroTel();
	}
  
} // AbonneOperateur
